/*
 *    /||\
 *   / || \
 *  /__||__\
 *   __
 *  \  | UNIVERSIDADE DE PASSO FUNDO
 *   \ | Instituto de Ciências Exatas e Geociências
 *    \| Curso de Ciência da Computação
 * 
 * Trabalho de Conclusão II - 2008/2
 * 
 * Título do trabalho: Paralelização do Solver Intervalar LSS
 * Acadêmico: Alexandre Almeida
 * Orientador: Prof. Dr. Carlos Amaral Hölbig
 * 
 * Módulo: CalculateDR2temp.h / CalculateDR2temp.cpp
 * Descrição: Implementa a versão paralela do cálculo das operações 3 e 4 da Tabela xxx do TCC.
 * 
 */

#ifndef CALCULATEDANDR2TEMP_
#define CALCULATEDANDR2TEMP_

#include "common.h"

using namespace std;
using namespace cxsc;

typedef struct {
	int threadId;
	rmatrix *sliceA;
	rmatrix *b;
	rmatrix *sliceC;
	rmatrix *sliceR2temp;
	int startRowA;
	int endRowA;
} threadArgsDR2;

void calculateDR2temp(rmatrix&, rmatrix&, rmatrix&, rmatrix&, int, int, int);
void calculateDR2temp(rmatrix&, rmatrix&, rmatrix&, int, int);

void parcialD2R2temp(rmatrix& a, rmatrix& b, rmatrix& c, rmatrix& r2temp);

void parcialD2R2temp(rmatrix& a, rmatrix& b, rmatrix& c, rmatrix& r2temp, int nt);
void *threadParcialDR2temp(void *tArgs);

#endif /*CALCULATEDANDR2TEMP_*/
